package com.bw.lib_base.app

import android.app.Application
import android.content.Context
import android.content.res.Configuration
import com.alibaba.android.arouter.launcher.ARouter
import com.amap.api.location.AMapLocationClient
import com.bw.lib_base.BuildConfig
import com.tencent.mmkv.MMKV
import com.umeng.commonsdk.UMConfigure
import com.umeng.socialize.PlatformConfig

/**
 * APP基类
 */
open class BaseApp:Application(){

    lateinit var appContext:Context

    /**
     * App挂载时调用
     */
    override fun attachBaseContext(base: Context?) {
        super.attachBaseContext(base)
        if (base!=null){
           appContext= base
        }
    }

    /**
     * App创建时调用
     */
    override fun onCreate() {
        super.onCreate()

        //初始化ARouter
        if (BuildConfig.DEBUG){
            ARouter.openDebug()
            ARouter.openLog()
        }
        ARouter.init(this)

        //初始化MMKV
        MMKV.initialize(this)
        AMapLocationClient.updatePrivacyAgree(this,true)
        AMapLocationClient.updatePrivacyShow(this,true,true)
        UMConfigure.init(this, "5a12384aa40fa3551f0001d1", "umeng", UMConfigure.DEVICE_TYPE_PHONE, "")
        // QQ设置
        PlatformConfig.setQQZone("101830139","5d63ae8858f1caab67715ccd6c18d7a5")
    }

    /**
     * App低内存时调用
     */
    override fun onLowMemory() {
        super.onLowMemory()
        //做一些回收相关的处理逻辑，如清理Glide的内存缓存，释放大的集合、大对象或者主动调用System.gc()方法
    }

    /**
     * App低配置改变时调用，如屏幕切换、语言切换、主题切换
     */
    override fun onConfigurationChanged(newConfig: Configuration) {
        super.onConfigurationChanged(newConfig)
    }

    /**
     * App退出时调用
     */
    override fun onTerminate() {
        //退出前执行某些简单的操作 不能做耗时操作 如保存一些状态 需要在super.onTerminate()方法前调用
        super.onTerminate()
    }

    /**
     * App内存不足时调用进行整理内存可能引发OOM
     */
    override fun onTrimMemory(level: Int) {
        super.onTrimMemory(level)
        //根据level的值，做一些内存释放的操作
    }



}